package com.itstudio.myforumsystem.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itstudio.myforumsystem.common.Result;
import com.itstudio.myforumsystem.entity.Collection;
import com.itstudio.myforumsystem.service.CollectionService;
import org.apache.ibatis.annotations.Delete;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/collection")
@ResponseBody
public class CollectionController {

    @Autowired
    private CollectionService collectionService;

    @PostMapping
    public Result save(@RequestBody Collection collection){
        collectionService.saveOrUpdate(collection);
        return Result.success();
    }
    //查询所有信息
    @GetMapping
    public Result findAll()
    {
        return Result.success(collectionService.list());
    }
    @DeleteMapping("/del/{userid}/{articleid}")
    public Result deleteByUseridAndArticleid(@PathVariable Integer userid,Integer articleid){
        collectionService.removeByUseridAndArticleId(userid,articleid);
        return Result.success();
    }
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {
        collectionService.removeById(id);
        return Result.success();
    }
    //批量删除
    @PostMapping("/del/batch")
    public boolean deleteBatch(@RequestBody List<Integer> ids){
        return collectionService.removeByIds(ids);
    }

//    //分页查询
//    @GetMapping("/page")
//    public IPage<Collection> findPage(@RequestParam Integer pageNum,
//                                      @RequestParam Integer pageSize,
//                                      @RequestParam(defaultValue = "") String name){
//        // 检查 pageNum 是否为 null，如果是则设置默认值为 1
//        pageNum = (pageNum != null) ? pageNum : 1;
//        // 检查 pageSize 是否为 null，如果是则设置默认值为 10（或者你想设置的其他默认值）
//        pageSize = (pageSize != null) ? pageSize : 3;
//        IPage<Collection> page=new Page<>(pageNum,pageSize);
//        QueryWrapper<Collection> queryWrapper=new QueryWrapper<>();
//        // 检查变量name是否为空字符串
//        if (!"".equals(name)) {
//            // 如果name不为空，使用QueryWrapper的like方法添加一个条件到查询中
//            // like方法表示查询时对name字段进行模糊匹配，例如在MySQL中，这将转化为 `name LIKE '%name%'`
//            // 注意：在MyBatis-Plus中，默认情况下，连续调用多个条件方法（如like、eq等）会自动添加AND操作符连接这些条件
//            // 所以这里相当于在SQL语句中添加了 `AND name LIKE '%name%'` 这个条件
//            queryWrapper.like("name", name);
//        }
//        return collectionService.page(page,queryWrapper);
//
//
//
//    }
    //分页查询
//    *
//            * @param pageNum  请求的页码，如果为null则默认为1
// * @param pageSize 每页显示的数量，如果为null则默认为3
// * @param name     查询条件，按照name字段进行模糊匹配，如果为空字符串则不添加此条件
// * @return          返回一个IPage<Collection>对象，包含当前页的查询结果
// */
    @GetMapping("/page")
    public IPage<Collection> findPage(@RequestParam (required = false)Integer pageNum,
                                      @RequestParam (required = false)Integer pageSize,
                                      @RequestParam(defaultValue = "",required = false) String name//避免搜索为空时的报错
    ){
        // 检查 pageNum 是否为 null，如果是则设置默认值为 1
        pageNum = (pageNum != null) ? pageNum : 1;
        // 检查 pageSize 是否为 null，如果是则设置默认值为 10（或者你想设置的其他默认值）
        pageSize = (pageSize != null) ? pageSize : 3;
        IPage<Collection> page = new Page<Collection>(pageNum,pageSize);
        QueryWrapper<Collection> queryWrapper = new QueryWrapper<Collection>();
        if(!"".equals(name)){
            queryWrapper.like("name",name);//框架是直接在中间加了一个and的
        }

        return collectionService.page(page,queryWrapper);

    }


}
